package pe.com.hermes.hermetic.web.controller.transacciones;

import pe.com.hermes.hermetic.beans.AuditBean;
import pe.com.hermes.hermetic.beans.CuentaBean;
import pe.com.hermes.hermetic.beans.DetallePedidoBean;
import pe.com.hermes.hermetic.beans.FechaCuentaBean;
import pe.com.hermes.hermetic.negocio.service.HermeticFacade;
import pe.com.hermes.hermetic.web.controller.base.IController;

import pe.com.hermes.hermetic.web.forms.HMF2001Form;
import pe.com.hermes.hermetic.web.forms.HMF2003Form;
import pe.com.hermes.hermetic.negocio.ultil.ConstantesHermetic;
import pe.com.hermes.hermetic.negocio.ultil.Util;

import pe.com.hermes.hermetic.web.controller.base.IWebOpciones;

import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@RequestMapping("/mostrarHWF2001.html")
@Controller
public class EliminarPedidoController implements IController{
    private Logger logger = Logger.getLogger(this.getClass());
    
    @Autowired
    private HermeticFacade servicioHermetic;
    
    @RequestMapping(method=RequestMethod.GET)
    protected String showForm(ModelMap model, HttpServletRequest request) throws Exception {

        HttpSession session = request.getSession(false);        
        if (session.getAttribute("usuario") == null)
            return FORM_SESSION_FINISH;

        List listaTransacciones = (List)session.getAttribute("listaMenu1");
        if (!Util.validaAccesoOpcion(listaTransacciones, 
                                     ConstantesHermetic.TRANS_ELIMINA_DE_PEDIDOS)) {
            return FORM_ACCESS_NULL_VIEW;
        }

        String cliente = (String)session.getAttribute("cliente");
        String sucursal = (String)session.getAttribute("sucursal");
        HMF2001Form form = new HMF2001Form();
        form.setControl(ConstantesHermetic.CTE_CONTROL_ACTIVO);
        Util util = new Util();
        try {
            List listadoCuentas = servicioHermetic.getBovedas(sucursal, cliente);
            if (listadoCuentas != null) {
                //request.setAttribute("listadoBoveda", listadoCuentas);
                 model.put("listadoBoveda",listadoCuentas);            
            }
            form.setFecha(util.getFechaActual());
            form.setBoveda("");
            AuditBean auditBean = new AuditBean(ELIM_PEDI);
            servicioHermetic.inseAudit(auditBean);
            String codOpci = IWebOpciones.ELIM_PEDI;
            String desOpci = servicioHermetic.getDesOpci(codOpci, request);
            model.put("codOpci",codOpci);
            model.put("desOpci",desOpci);
            model.put(FORM_KEY,form);                        
            
        } catch (Exception e) {
            e.printStackTrace();
            logger.error("Error en el proceso. "+ e);
            return FORM_ERROR_VIEW;
        }

        return FORM_ELIM_PEDI_VIEW;
    }

    @RequestMapping(params="accion=cargarFecha")
    private String cargarFecha (ModelMap model,@ModelAttribute(FORM_KEY) HMF2001Form form, HttpServletRequest request) throws Exception {    
    
        
        form.setControl(ConstantesHermetic.CTE_CONTROL_ACTIVO);
        try {
            String cliente = (String)request.getSession().getAttribute("cliente");
            String sucursal = (String)request.getSession().getAttribute("sucursal");
            String fecha = servicioHermetic.getFechaSolicitudPedido(cliente, 
                                                                    form.getBoveda());            
                                                                    
            if (!fecha.equals("")) {
                form.setFecha(fecha);
            } else {
                Util util = new Util();
                form.setFecha(util.getFechaActual());
                form.setBoveda(form.getBoveda());
            }
            List listadoCuentas = servicioHermetic.getBovedas(sucursal, cliente);
            if (listadoCuentas != null) {
                //request.setAttribute("listadoBoveda", listadoCuentas);
                model.put("listadoBoveda",listadoCuentas);                   
            }
            model.put(FORM_KEY,form);

        } catch (Exception e) {
            e.printStackTrace();
        }
        return FORM_ELIM_PEDI_VIEW;
    }
    

    @RequestMapping(params="accion=mostrar")
    private String mostrar (ModelMap model,@ModelAttribute(FORM_KEY) HMF2001Form form, HttpServletRequest request) throws Exception {    

        form.setControl(ConstantesHermetic.CTE_CONTROL_ACTIVO);
        
        try {
            String cliente = (String)request.getSession().getAttribute("cliente");
            String sucursal = (String)request.getSession().getAttribute("sucursal");
            List listadoEliminados = servicioHermetic.getListadoEliminaPedidos(form.getFecha(), 
                                                                sucursal, 
                                                                form.getBoveda(), 
                                                                cliente);
            if (listadoEliminados != null) {
                //request.setAttribute("listadoPedidosE", listadoEliminados);
                model.put("listadoPedidosE",listadoEliminados); 
            }            
                        
            form.setBoveda(form.getBoveda());
            form.setFecha(form.getFecha());
            List listadoCuentas = servicioHermetic.getBovedas(sucursal, cliente);
            if (listadoCuentas != null) {
                //request.setAttribute("listadoBoveda", listadoCuentas);
                model.put("listadoBoveda",listadoCuentas); 
            }
            model.put(FORM_KEY,form);
        } catch (Exception e) {
            e.printStackTrace();            
        }        
        
        return FORM_ELIM_PEDI_VIEW;
    }    
    
    @RequestMapping(params="accion=eliminar")
    private String eliminar (ModelMap model,@ModelAttribute(FORM_KEY) HMF2001Form form, HttpServletRequest request) throws Exception {            
        String cod = form.getChk();
        int ra = cod.indexOf("-");
        int mas = cod.indexOf("+");

        String pedido = cod.substring(0, ra);
        String serie = cod.substring(ra + 1, mas);
        String tipo = cod.substring(mas + 1);
        
        form.setControl(ConstantesHermetic.CTE_CONTROL_ACTIVO);
        
        try {
            DetallePedidoBean dpedido = new DetallePedidoBean();

            dpedido.setUsuario(request.getSession().getAttribute("usuario").toString());
            dpedido.setNumPedido(pedido);
            dpedido.setCodSeriePedido(serie);
            dpedido.setTipoDocu(tipo);
            dpedido.setCodBoveda(form.getBoveda());
            /** Mod. NSC 13-08-09 Se setea el nombre de servidor para la auditoria **/
            /**request.getRemoteHost(); **/
            dpedido.setNomComp(request.getServerName());
            /** **/
            servicioHermetic.eliminarPedido(dpedido);

            String cliente = (String)request.getSession().getAttribute("cliente");
            String sucursal = (String)request.getSession().getAttribute("sucursal");
            List listadoEliminados = servicioHermetic.getListadoEliminaPedidos(form.getFecha(), 
                                                                sucursal, 
                                                                form.getBoveda(), 
                                                                cliente);
            if (listadoEliminados != null) {
                //request.setAttribute("listadoPedidosE", listadoEliminados);
                model.put("listadoPedidosE",listadoEliminados); 
            }
            form.setBoveda(form.getBoveda());
            form.setFecha(form.getFecha());
            List listadoCuentas = servicioHermetic.getBovedas(sucursal, cliente);
            if (listadoCuentas != null) {
                //request.setAttribute("listadoBoveda", listadoCuentas);
                model.put("listadoBoveda",listadoCuentas); 
            }
            model.put(FORM_KEY,form);

        } catch (Exception e) {
            e.printStackTrace();
        }

        return FORM_ELIM_PEDI_VIEW;

    }    

}
